// Verilated -*- C++ -*-
// DESCRIPTION: Verilator output: Tracing implementation internals
#include "verilated_vcd_c.h"
#include "Vysyx_22040213_sext12to64__Syms.h"


void Vysyx_22040213_sext12to64___024root__traceInitSub0(Vysyx_22040213_sext12to64___024root* vlSelf, VerilatedVcd* tracep) VL_ATTR_COLD;

void Vysyx_22040213_sext12to64___024root__traceInitTop(Vysyx_22040213_sext12to64___024root* vlSelf, VerilatedVcd* tracep) {
    if (false && vlSelf) {}  // Prevent unused
    Vysyx_22040213_sext12to64__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
    // Body
    {
        Vysyx_22040213_sext12to64___024root__traceInitSub0(vlSelf, tracep);
    }
}

void Vysyx_22040213_sext12to64___024root__traceInitSub0(Vysyx_22040213_sext12to64___024root* vlSelf, VerilatedVcd* tracep) {
    if (false && vlSelf) {}  // Prevent unused
    Vysyx_22040213_sext12to64__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
    const int c = vlSymsp->__Vm_baseCode;
    if (false && tracep && c) {}  // Prevent unused
    // Body
    {
        tracep->declBit(c+70,"clk", false,-1);
        tracep->declBit(c+71,"rst", false,-1);
        tracep->declBus(c+72,"inst", false,-1, 31,0);
        tracep->declQuad(c+73,"pc", false,-1, 63,0);
        tracep->declBit(c+70,"ysyx_22040213_top clk", false,-1);
        tracep->declBit(c+71,"ysyx_22040213_top rst", false,-1);
        tracep->declBus(c+72,"ysyx_22040213_top inst", false,-1, 31,0);
        tracep->declQuad(c+73,"ysyx_22040213_top pc", false,-1, 63,0);
        tracep->declBus(c+75,"ysyx_22040213_top opcode", false,-1, 6,0);
        tracep->declBus(c+76,"ysyx_22040213_top rs1", false,-1, 4,0);
        tracep->declBus(c+77,"ysyx_22040213_top rs2", false,-1, 4,0);
        tracep->declBus(c+78,"ysyx_22040213_top rd", false,-1, 4,0);
        tracep->declBus(c+79,"ysyx_22040213_top funct3", false,-1, 2,0);
        tracep->declBus(c+80,"ysyx_22040213_top imm", false,-1, 11,0);
        tracep->declQuad(c+1,"ysyx_22040213_top ext_imm", false,-1, 63,0);
        tracep->declQuad(c+3,"ysyx_22040213_top wdata", false,-1, 63,0);
        tracep->declBus(c+5,"ysyx_22040213_top waddr", false,-1, 4,0);
        tracep->declBit(c+81,"ysyx_22040213_top wen", false,-1);
        tracep->declQuad(c+82,"ysyx_22040213_top src1", false,-1, 63,0);
        tracep->declQuad(c+84,"ysyx_22040213_top src2", false,-1, 63,0);
        tracep->declBit(c+70,"ysyx_22040213_top pc1 clk", false,-1);
        tracep->declBit(c+71,"ysyx_22040213_top pc1 rst", false,-1);
        tracep->declQuad(c+73,"ysyx_22040213_top pc1 pc", false,-1, 63,0);
        tracep->declBus(c+72,"ysyx_22040213_top idu inst", false,-1, 31,0);
        tracep->declBus(c+75,"ysyx_22040213_top idu opcode", false,-1, 6,0);
        tracep->declBus(c+76,"ysyx_22040213_top idu rs1", false,-1, 4,0);
        tracep->declBus(c+77,"ysyx_22040213_top idu rs2", false,-1, 4,0);
        tracep->declBus(c+78,"ysyx_22040213_top idu rd", false,-1, 4,0);
        tracep->declBus(c+79,"ysyx_22040213_top idu funct3", false,-1, 2,0);
        tracep->declBus(c+80,"ysyx_22040213_top idu imm", false,-1, 11,0);
        tracep->declQuad(c+1,"ysyx_22040213_top idu ext_imm", false,-1, 63,0);
        tracep->declBus(c+80,"ysyx_22040213_top idu sext1 imm", false,-1, 11,0);
        tracep->declQuad(c+1,"ysyx_22040213_top idu sext1 ext_imm", false,-1, 63,0);
        tracep->declBus(c+86,"ysyx_22040213_top reg1 ADDR_WIDTH", false,-1, 31,0);
        tracep->declBus(c+87,"ysyx_22040213_top reg1 DATA_WIDTH", false,-1, 31,0);
        tracep->declBit(c+70,"ysyx_22040213_top reg1 clk", false,-1);
        tracep->declQuad(c+3,"ysyx_22040213_top reg1 wdata", false,-1, 63,0);
        tracep->declBus(c+5,"ysyx_22040213_top reg1 waddr", false,-1, 4,0);
        tracep->declBit(c+81,"ysyx_22040213_top reg1 wen", false,-1);
        tracep->declBus(c+76,"ysyx_22040213_top reg1 rs1", false,-1, 4,0);
        tracep->declBus(c+77,"ysyx_22040213_top reg1 rs2", false,-1, 4,0);
        tracep->declQuad(c+82,"ysyx_22040213_top reg1 src1", false,-1, 63,0);
        tracep->declQuad(c+84,"ysyx_22040213_top reg1 src2", false,-1, 63,0);
        {int i; for (i=0; i<32; i++) {
                tracep->declQuad(c+6+i*2,"ysyx_22040213_top reg1 rf", true,(i+0), 63,0);}}
        tracep->declBus(c+75,"ysyx_22040213_top alu1 opcode", false,-1, 6,0);
        tracep->declQuad(c+82,"ysyx_22040213_top alu1 src1", false,-1, 63,0);
        tracep->declQuad(c+84,"ysyx_22040213_top alu1 src2", false,-1, 63,0);
        tracep->declQuad(c+1,"ysyx_22040213_top alu1 ext_imm", false,-1, 63,0);
        tracep->declBus(c+79,"ysyx_22040213_top alu1 funct3", false,-1, 2,0);
        tracep->declBus(c+78,"ysyx_22040213_top alu1 rd", false,-1, 4,0);
        tracep->declQuad(c+3,"ysyx_22040213_top alu1 wdata", false,-1, 63,0);
        tracep->declBus(c+5,"ysyx_22040213_top alu1 waddr", false,-1, 4,0);
        tracep->declBus(c+75,"ysyx_22040213_top ctrl1 opcode", false,-1, 6,0);
        tracep->declBit(c+81,"ysyx_22040213_top ctrl1 wen", false,-1);
    }
}

void Vysyx_22040213_sext12to64___024root__traceFullTop0(void* voidSelf, VerilatedVcd* tracep) VL_ATTR_COLD;
void Vysyx_22040213_sext12to64___024root__traceChgTop0(void* voidSelf, VerilatedVcd* tracep);
void Vysyx_22040213_sext12to64___024root__traceCleanup(void* voidSelf, VerilatedVcd* /*unused*/);

void Vysyx_22040213_sext12to64___024root__traceRegister(Vysyx_22040213_sext12to64___024root* vlSelf, VerilatedVcd* tracep) {
    if (false && vlSelf) {}  // Prevent unused
    Vysyx_22040213_sext12to64__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
    // Body
    {
        tracep->addFullCb(&Vysyx_22040213_sext12to64___024root__traceFullTop0, vlSelf);
        tracep->addChgCb(&Vysyx_22040213_sext12to64___024root__traceChgTop0, vlSelf);
        tracep->addCleanupCb(&Vysyx_22040213_sext12to64___024root__traceCleanup, vlSelf);
    }
}

void Vysyx_22040213_sext12to64___024root__traceFullSub0(Vysyx_22040213_sext12to64___024root* vlSelf, VerilatedVcd* tracep) VL_ATTR_COLD;

void Vysyx_22040213_sext12to64___024root__traceFullTop0(void* voidSelf, VerilatedVcd* tracep) {
    Vysyx_22040213_sext12to64___024root* const __restrict vlSelf = static_cast<Vysyx_22040213_sext12to64___024root*>(voidSelf);
    Vysyx_22040213_sext12to64__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
    // Body
    {
        Vysyx_22040213_sext12to64___024root__traceFullSub0((&vlSymsp->TOP), tracep);
    }
}

void Vysyx_22040213_sext12to64___024root__traceFullSub0(Vysyx_22040213_sext12to64___024root* vlSelf, VerilatedVcd* tracep) {
    if (false && vlSelf) {}  // Prevent unused
    Vysyx_22040213_sext12to64__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
    vluint32_t* const oldp = tracep->oldp(vlSymsp->__Vm_baseCode);
    if (false && oldp) {}  // Prevent unused
    // Body
    {
        tracep->fullQData(oldp+1,(vlSelf->ysyx_22040213_top__DOT__ext_imm),64);
        tracep->fullQData(oldp+3,(vlSelf->ysyx_22040213_top__DOT__wdata),64);
        tracep->fullCData(oldp+5,(vlSelf->ysyx_22040213_top__DOT__waddr),5);
        tracep->fullQData(oldp+6,(vlSelf->ysyx_22040213_top__DOT__reg1__DOT__rf[0]),64);
        tracep->fullQData(oldp+8,(vlSelf->ysyx_22040213_top__DOT__reg1__DOT__rf[1]),64);
        tracep->fullQData(oldp+10,(vlSelf->ysyx_22040213_top__DOT__reg1__DOT__rf[2]),64);
        tracep->fullQData(oldp+12,(vlSelf->ysyx_22040213_top__DOT__reg1__DOT__rf[3]),64);
        tracep->fullQData(oldp+14,(vlSelf->ysyx_22040213_top__DOT__reg1__DOT__rf[4]),64);
        tracep->fullQData(oldp+16,(vlSelf->ysyx_22040213_top__DOT__reg1__DOT__rf[5]),64);
        tracep->fullQData(oldp+18,(vlSelf->ysyx_22040213_top__DOT__reg1__DOT__rf[6]),64);
        tracep->fullQData(oldp+20,(vlSelf->ysyx_22040213_top__DOT__reg1__DOT__rf[7]),64);
        tracep->fullQData(oldp+22,(vlSelf->ysyx_22040213_top__DOT__reg1__DOT__rf[8]),64);
        tracep->fullQData(oldp+24,(vlSelf->ysyx_22040213_top__DOT__reg1__DOT__rf[9]),64);
        tracep->fullQData(oldp+26,(vlSelf->ysyx_22040213_top__DOT__reg1__DOT__rf[10]),64);
        tracep->fullQData(oldp+28,(vlSelf->ysyx_22040213_top__DOT__reg1__DOT__rf[11]),64);
        tracep->fullQData(oldp+30,(vlSelf->ysyx_22040213_top__DOT__reg1__DOT__rf[12]),64);
        tracep->fullQData(oldp+32,(vlSelf->ysyx_22040213_top__DOT__reg1__DOT__rf[13]),64);
        tracep->fullQData(oldp+34,(vlSelf->ysyx_22040213_top__DOT__reg1__DOT__rf[14]),64);
        tracep->fullQData(oldp+36,(vlSelf->ysyx_22040213_top__DOT__reg1__DOT__rf[15]),64);
        tracep->fullQData(oldp+38,(vlSelf->ysyx_22040213_top__DOT__reg1__DOT__rf[16]),64);
        tracep->fullQData(oldp+40,(vlSelf->ysyx_22040213_top__DOT__reg1__DOT__rf[17]),64);
        tracep->fullQData(oldp+42,(vlSelf->ysyx_22040213_top__DOT__reg1__DOT__rf[18]),64);
        tracep->fullQData(oldp+44,(vlSelf->ysyx_22040213_top__DOT__reg1__DOT__rf[19]),64);
        tracep->fullQData(oldp+46,(vlSelf->ysyx_22040213_top__DOT__reg1__DOT__rf[20]),64);
        tracep->fullQData(oldp+48,(vlSelf->ysyx_22040213_top__DOT__reg1__DOT__rf[21]),64);
        tracep->fullQData(oldp+50,(vlSelf->ysyx_22040213_top__DOT__reg1__DOT__rf[22]),64);
        tracep->fullQData(oldp+52,(vlSelf->ysyx_22040213_top__DOT__reg1__DOT__rf[23]),64);
        tracep->fullQData(oldp+54,(vlSelf->ysyx_22040213_top__DOT__reg1__DOT__rf[24]),64);
        tracep->fullQData(oldp+56,(vlSelf->ysyx_22040213_top__DOT__reg1__DOT__rf[25]),64);
        tracep->fullQData(oldp+58,(vlSelf->ysyx_22040213_top__DOT__reg1__DOT__rf[26]),64);
        tracep->fullQData(oldp+60,(vlSelf->ysyx_22040213_top__DOT__reg1__DOT__rf[27]),64);
        tracep->fullQData(oldp+62,(vlSelf->ysyx_22040213_top__DOT__reg1__DOT__rf[28]),64);
        tracep->fullQData(oldp+64,(vlSelf->ysyx_22040213_top__DOT__reg1__DOT__rf[29]),64);
        tracep->fullQData(oldp+66,(vlSelf->ysyx_22040213_top__DOT__reg1__DOT__rf[30]),64);
        tracep->fullQData(oldp+68,(vlSelf->ysyx_22040213_top__DOT__reg1__DOT__rf[31]),64);
        tracep->fullBit(oldp+70,(vlSelf->clk));
        tracep->fullBit(oldp+71,(vlSelf->rst));
        tracep->fullIData(oldp+72,(vlSelf->inst),32);
        tracep->fullQData(oldp+73,(vlSelf->pc),64);
        tracep->fullCData(oldp+75,((0x7fU & vlSelf->inst)),7);
        tracep->fullCData(oldp+76,((0x1fU & (vlSelf->inst 
                                             >> 0xfU))),5);
        tracep->fullCData(oldp+77,((0x1fU & (vlSelf->inst 
                                             >> 0x14U))),5);
        tracep->fullCData(oldp+78,((0x1fU & (vlSelf->inst 
                                             >> 7U))),5);
        tracep->fullCData(oldp+79,((7U & (vlSelf->inst 
                                          >> 0xcU))),3);
        tracep->fullSData(oldp+80,((vlSelf->inst >> 0x14U)),12);
        tracep->fullBit(oldp+81,((0x13U == (0x7fU & vlSelf->inst))));
        tracep->fullQData(oldp+82,(((0U != (0x1fU & 
                                            (vlSelf->inst 
                                             >> 0xfU)))
                                     ? vlSelf->ysyx_22040213_top__DOT__reg1__DOT__rf
                                    [(0x1fU & (vlSelf->inst 
                                               >> 0xfU))]
                                     : 0ULL)),64);
        tracep->fullQData(oldp+84,(((0U != (0x1fU & 
                                            (vlSelf->inst 
                                             >> 0x14U)))
                                     ? vlSelf->ysyx_22040213_top__DOT__reg1__DOT__rf
                                    [(0x1fU & (vlSelf->inst 
                                               >> 0x14U))]
                                     : 0ULL)),64);
        tracep->fullIData(oldp+86,(0x20U),32);
        tracep->fullIData(oldp+87,(0x40U),32);
    }
}
